Perbandingan Teknologi Container

Wardhana

Januari 2025

Intro

Sekilas Sejarah (1/3)

Sekilas Sejarah (2/3)

Sekilas Sejarah (3/3)

Perbandingan

VM vs Container

VM

  • Full translation layer.

  • Setiap VM memiliki kernel tersendiri, meskipun OS host dan VM sama.

  • Bisa menjalankan kernel “asing,” seperti menjalankan Windows atau FreeBSD di dalam Linux.

  • High overhead: more disk, CPU, and RAM usage, normal boot time.

Container

  • Translation layer minimal.

  • Container tidak memiliki kernel tersendiri, tapi “menumpang” milik host-nya (kernel sharing).

  • Hanya bisa menjalankan sistem dengan jenis kernel yang sama, seperti menjalankan Ubuntu di dalam RHEL.

  • Low overhead: less disk, CPU, and RAM usage, fast boot time.

Application vs System Container (1/4)

Secara umum, ada 2 (dua) jenis container,

Application Container

  • Docker, Podman.

  • Hanya menjalankan aplikasi.

  • Ringan, minimal overhead, cocok untuk microservices.

  • Cocok bagi developer yang terbiasa dengan infra as code (IaC).

  • Biasa digunakan pada development environment, CI/CD, serta komputasi cloud dan serverless.

System Container

  • LXC, LXD, Incus.

  • Menjalankan Linux OS tanpa kernel tersendiri.

  • Performa mendekati native, cocok untuk aplikasi monolitik.

  • Cocok bagi administrator yang terbiasa dengan Linux.

  • Biasa digunakan pada sistem yang memerlukan komputasi intensif, stabilitas jangka panjang, serta jarang mengalami perubahan arsitektur.

Application vs System Container (2/4)

Application Container

  • Dirancang untuk menjalankan satu proses per container.

  • Setiap container berjalan di atas satu atau beberapa multi-layered images.

  • Setiap image dapat digunakan oleh beberapa container.

  • Setiap image tidak dapat dihapus selagi ada container yang menggunakannya, meskipun container tersebut mati.

System Container

  • Dapat menjalankan berbagai proses dalam satu container.

  • Setiap container dibuat dari satu image.
     

  • Setiap template dapat membuat beberapa container.

  • Template dapat dihapus kapan saja tanpa memengaruhi container.

Application vs System Container (3/4)

Application Container

  • Penulisan Dockerfile atau Containerfile yang kurang optimal berisiko menambah image layers.

  • Ukuran images mesti dipantau agar tidak memakan disk space → sering terjadi pada laptop bahkan server produksi.

  • Tidak ada snapshot, hanya full backup → boros disk space.
     

  • Ada jutaan images di Docker Hub, tapi sedikit yang berkualitas dan tidak memerlukan tweaking, sebagian besar unmaintained.

System Container

  • Config file lebih sederhana dan tidak memerlukan teknik khusus.

  • Struktur penyimpanan lebih sederhana, lebih manageable.
     

  • Snapshot mirip VM, dengan copy-on-write (CoW), hanya menyimpan perdebaan atau delta → hemat disk space.

  • Hanya ada sekitar 3400 images di LXC/Incus image server, tapi semuanya adalah clean OS dan well maintained.

Application vs System Container (4/4)

Application Container

  • Performa network bridge buruk.

  • Performa network terbaik menggunakan host driver. Tapi konsekuensinya, setiap port hanya bisa “didengarkan” oleh satu container.

  • Update mesti dilakukan dalam beberapa tahap:

    • Edit Dockerfile atau Containerfile untuk image baru.
    • Build image baru.
    • Matikan dan hapus container lama.
    • Buat dan jalankan container dari image baru.
    • Hapus image lama.

System Container

  • Performa network bridge mendekati native.

  • Performa NAT bridge bawaan pun sama.
     
     

  • Update dapat dilakukan sebagaimana pada Linux biasa, tanpa perlu mematikan container.

LXC vs Docker

Dari blog resmi Docker …

LXC vs. Docker: Which One Should You Use?

Docker is designed for developers who want to quickly and efficiently build and deploy applications in various environments with minimal setup. On the other hand, LXC is more suitable for users who need a lightweight alternative to virtual machines and want more control over the operating system and hardware.

LXC vs LXD vs Incus

LXC

  • Dipayungi oleh Linux Container Project.

  • Container only.
     

  • No official web UI.

  • Pengembangan sangat pesat, banyak fitur baru dan peningkatan performa dalam setahun terakhir.

LXD

  • Kini dikembangkan secara eksklusif oleh Canonical.

  • Container + VM dalam satu sistem, satu interface.

  • Official web UI.

Incus

  • Di bawah payung yang sama dengan LXC.

  • Container + VM dalam satu sistem, satu interface.

  • Official web UI.

  • Pengembangan seiring sejalan dengan LXC.

  • Versi terbaru 6.0.3 LTS didukung hingga 2029.

The end of slideshow …
The start for Incus 😎